package com.tbryant.test.designpattern.zenofdesignpattern.template.extend;

/**
 * @author TBryant
 * @date 2021/10/26 17:00
 */
public abstract class AbstractClass {
    // 基本方法 建议使用protected修饰
    protected abstract void doSomething1();

    protected abstract void doSomething2();

    // 模板方法 建议使用final修饰
    public final void templateMethod() {
        if (this.needDoSomething1()) {
            this.doSomething1();
        }
        this.doSomething2();
    }

    // 控制doSomething1方法的调用
    protected boolean needDoSomething1() {
        return true;
    }
}
